BigInteger এবং BigDecimal হল java.math প্যাকেজের দুটি ক্লাস, যা খুব বড় সংখ্যা (arbitrary precision numbers) পরিচালনা করতে ব্যবহৃত হয়। এই ক্লাসগুলির মধ্যে Comparison (তুলনা) করার জন্য বিভিন্ন মেথড যেমন compareTo() এবং equals() ব্যবহার করা হয়।
BigInteger এবং BigDecimal Comparison Methods
1. compareTo() Method:
compareTo() মেথডটি দুটি BigInteger বা BigDecimal অবজেক্টের মধ্যে তুলনা করার জন্য ব্যবহৃত হয়। এটি একটি integer মান ফেরত দেয়:
0ফেরত দেয় যদি দুইটি সংখ্যা সমান হয়।-1ফেরত দেয় যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার চেয়ে ছোট হয়।1ফেরত দেয় যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার চেয়ে বড় হয়।
Syntax:
int compareTo(T anotherBigInteger) // For BigInteger
int compareTo(BigDecimal anotherBigDecimal) // For BigDecimal
2. equals() Method:
equals() মেথডটি দুটি BigInteger বা BigDecimal অবজেক্টের মধ্যে সঠিক সমতা যাচাই করে। এটি true ফেরত দেয় যদি দুটি সংখ্যা একে অপরের সমান হয়, এবং false ফেরত দেয় যদি তারা সমান না হয়।
Syntax:
boolean equals(Object obj) // For BigInteger
boolean equals(Object obj) // For BigDecimal
BigInteger এবং BigDecimal Comparison Example:
1. BigInteger Comparison:
import java.math.BigInteger;
public class BigIntegerComparison {
public static void main(String[] args) {
// Create BigInteger objects
BigInteger num1 = new BigInteger("123456789");
BigInteger num2 = new BigInteger("987654321");
BigInteger num3 = new BigInteger("123456789");
// Compare num1 and num2
System.out.println("num1 compareTo num2: " + num1.compareTo(num2)); // -1 (num1 < num2)
// Compare num1 and num3
System.out.println("num1 compareTo num3: " + num1.compareTo(num3)); // 0 (num1 == num3)
// Use equals method
System.out.println("num1 equals num2: " + num1.equals(num2)); // false
System.out.println("num1 equals num3: " + num1.equals(num3)); // true
}
}
Output:
num1 compareTo num2: -1
num1 compareTo num3: 0
num1 equals num2: false
num1 equals num3: true
2. BigDecimal Comparison:
import java.math.BigDecimal;
public class BigDecimalComparison {
public static void main(String[] args) {
// Create BigDecimal objects
BigDecimal bd1 = new BigDecimal("123.45");
BigDecimal bd2 = new BigDecimal("987.65");
BigDecimal bd3 = new BigDecimal("123.45");
// Compare bd1 and bd2
System.out.println("bd1 compareTo bd2: " + bd1.compareTo(bd2)); // -1 (bd1 < bd2)
// Compare bd1 and bd3
System.out.println("bd1 compareTo bd3: " + bd1.compareTo(bd3)); // 0 (bd1 == bd3)
// Use equals method
System.out.println("bd1 equals bd2: " + bd1.equals(bd2)); // false
System.out.println("bd1 equals bd3: " + bd1.equals(bd3)); // true
}
}
Output:
bd1 compareTo bd2: -1
bd1 compareTo bd3: 0
bd1 equals bd2: false
bd1 equals bd3: true
Key Differences Between compareTo() and equals() for BigInteger and BigDecimal
compareTo():- এটি অসংখ্য সঠিকতা এবং পূর্ণসংখ্যার আকার অনুযায়ী তুলনা করে।
compareTo()মেথডটিBigIntegerবাBigDecimalএর মানের সাইজ (value) এবং সঠিকতা (precision) অনুযায়ী তুলনা করে।compareTo()কখনো0,-1, অথবা1রিটার্ন করে, যা প্রতিফলিত করে যে সংখ্যাটি ছোট, সমান, অথবা বড়।
equals():- এটি তুলনা করে শুধুমাত্র মানের (value) এবং পূর্নসংখ্যার সঠিকতা (scale)।
equals()মেথডটি শুধুমাত্র তখনtrueফেরত দেয়, যখন দুটিBigIntegerবাBigDecimalঅবজেক্টের মান এবং স্কেল একই হবে।
Special Consideration for BigDecimal:
BigDecimal ক্লাসে scale (ডেসিমাল পয়েন্টের অবস্থান) বিষয়টি খুবই গুরুত্বপূর্ণ, এবং equals() মেথড scale এর তুলনা করে। ফলে, দুটি BigDecimal যদি মানে সমান হলেও তাদের স্কেল আলাদা থাকে, তবে equals() false ফেরত দিতে পারে।
Example: BigDecimal scale effect on equals() method:
import java.math.BigDecimal;
public class BigDecimalScaleEffect {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("123.45");
BigDecimal bd2 = new BigDecimal("123.4500");
// Check equality
System.out.println("bd1 equals bd2: " + bd1.equals(bd2)); // false
// Check comparison
System.out.println("bd1 compareTo bd2: " + bd1.compareTo(bd2)); // 0 (bd1 == bd2)
}
}
Output:
bd1 equals bd2: false
bd1 compareTo bd2: 0
ব্যাখ্যা:
equals()মেথডে scale (ডেসিমাল পয়েন্টের পরিমাণ) তুলনা করা হয়, এবং এটি যদি ভিন্ন হয়, তবে এটিfalseরিটার্ন করে।- তবে
compareTo()কেবলমাত্র value তুলনা করে, তাই এখানে দুটিBigDecimalসমান হিসেবে গণ্য হয়েছে।
compareTo()মেথডটি ভ্যালু বা মানের তুলনা করে, এবং এর ফলাফল হিসেবে0,-1, বা1ফেরত দেয়।equals()মেথডটি ভ্যালু এবং স্কেল (precision) তুলনা করে এবং শুধুমাত্র তখনইtrueফেরত দেয় যখন দুটি সংখ্যা সমান এবং স্কেল একেবারে একই হয়।BigDecimalএর ক্ষেত্রে scale তত্ত্বটি গুরুত্বপূর্ন, কারণ স্কেল পরিবর্তিত হলেequals()মেথড false ফেরত দিতে পারে, কিন্তুcompareTo()সঠিক মান তুলনা করে 0 ফেরত দেবে।